#include "exp_3.h"
/*
测试数据
10
10
9 10
0 高等数学 2 10
1 线性代数 3 8
2 马克思主义基本原理 3 8
3 C语言 0.5 10
4 C++ 2 12
5 体育 4 7
6 英语 4.5 6
7 离散数学 3 9
8 概率论 3 5
0 1
1 3
2 4
3 2
3 6
5 4
6 5
7 5
8 6
8 7
*/
int main() {
	ALGraph g;
	printf("************************************************************\n");
	printf("*                  欢迎来到课程编排系统                    *\n");
	printf("*          请按如下提示输入课程内容，进行课表编排          *\n");
	printf("************************************************************\n\n");
	printf("请输入每个学期的课程学分上限：");
	scanf("%f", &score_lim);
	printf("请输入每个学期的课程门数上限：");
	scanf("%d", &num_lim);
	CreateALGraph(&g);
	if (course_sort(&g) == FALSE) {
		system("pause");
		return;
	}
	/*测试函数
	int courseNum = g.vexnum;
	ans.course = (int *)malloc(sizeof(int) * courseNum);
	ans.term = (int *)malloc(sizeof(int) * courseNum);
	level = (int *)malloc(sizeof(int) * courseNum);
	tmpTerm = (int *)malloc(sizeof(int) * courseNum);
	ans.totalTerms = INT_MAX;
	ans.totalWeeks = INT_MAX;
	int _level[] = {0, 1, 3, 2, 5, 4, 3, 1, 0};
	int tmpAns[] = {0, 8, 1, 7, 3, 2, 6, 5, 4};
	for (int i = 0; i < courseNum; ++i) {
		level[i] = _level[i];
	}
	update(&g, tmpAns);
	*/
	//输出课表
	int i, j;
	printf("\n\n\n");
	printf("\t\t\t|—————————————————————————————————————|\n");
	printf("\t\t\t|                        ******************                  "
		"              |\n");
	printf("\t\t\t|                        ****授课计划表****                  "
		"              |\n");
	printf("\t\t\t|                        ******************                  "
		"              |\n");
	printf("\t\t\t|—————————————————————————————————————|\n");
	printf("\t\t\t|—————————————————————————————————————|\n");
	printf("\t\t\t|序号     |名称                           |学分\t|周数\t|次序\t|所处学期|\n");
	printf("\t\t\t|—————————————————————————————————————|\n");
	for (i = 0; i < g.vexnum; ++i) {
		j = ans.course[i];
		printf("\t\t\t|%-9d|%-31s|%-3.2f\t|%-4d\t|%-4d\t|%-8d|   \n",
			g.Adjlist[j].data.num, g.Adjlist[j].data.name,
			g.Adjlist[j].data.score, g.Adjlist[j].data.weeks, level[j],
			ans.term[i]);
		printf("\t\t\t|—————————————————————————————————————|\n");
	}
	printf("\t\t\t|—————————————————————————————————————|\n");
	printf("\t\t\t|共计教学时长（周数）：%d\t\t\t\t\t\t   |\n", ans.totalWeeks);
	printf("\t\t\t|                                                            "
		"              |\n");
	printf("\t\t\t|总学期数：%d\t\t\t\t\t\t\t\t   |\n", ans.totalTerms);
	printf("\t\t\t|—————————————————————————————————————|\n");
	system("pause");
	/*
	printf("序号\t名称\t学分\t周数\t次序\t所处学期\n");
	for (i = 0; i < g.vexnum; ++i) {
		j = ans.course[i];
		printf("%d\t%s\t%.2f\t%d\t%d\t%d\n", g.Adjlist[j].data.num,
			   g.Adjlist[j].data.name, g.Adjlist[j].data.score,
			   g.Adjlist[j].data.weeks, level[j], ans.term[i]);
	}
	printf("共计教学时长（周数）：%d\n总学期数：%d", ans.totalWeeks,
		   ans.totalTerms);
	getchar();
	*/
	return 0;
}